home *** CD-ROM | disk | FTP | other *** search
/ Atari Forever 4 / Atari Forever 4.zip / Atari Forever 4.iso / SERIE_AI / AI_036 / DIR2FIL / DIR2FILE.C next >
C/C++ Source or Header  |  1998-03-14  |  7KB  |  263 lines

  1. /*  Dir to File from Xite softvare 
  2.         by Per-Erik "Pekka" Peterson  Gothenburg Sweden   */
  3.  
  4. #include <tos.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8. #include <ext.h>
  9.  
  10. void read_data(FILE *fp, char dir[], int attr);
  11. void put_info(void);
  12.  
  13. int main(int argc, char *argv[])
  14. {
  15.     char var1[], filename[];
  16.     int tjo, kontr = 0, hej;
  17.     FILE *fp;
  18.     
  19.     char pek1[] = "/H"; 
  20.     char pek2[] = "/h"; 
  21.     char pek3[] = "/S"; 
  22.     char pek4[] = "/s"; 
  23.     char pek5[] = "/V"; 
  24.     char pek6[] = "/v"; 
  25.     char pek7[] = "/D"; 
  26.     char pek8[] = "/d"; 
  27.     char pek9[] = "/A"; 
  28.     char pek10[] = "/a"; 
  29.     char pek11[] = "/R"; 
  30.     char pek12[] = "/r"; 
  31.  
  32.     hej = argc;
  33.  
  34.     if (argc == 1){
  35.         put_info();
  36.     }
  37.  
  38.     if (argc == 2){
  39.       if ((fp=fopen("DIR2FILE.TXT", "w+"))==NULL){
  40.         fprintf(stderr,"Cant open DIR2FILE.TXT!\n");
  41.         exit(1);
  42.       }
  43.         read_data(fp, argv[1], 0);
  44.   }
  45.  
  46.     if (argc >= 3){
  47.  
  48.         if (argc == 3)
  49.             sprintf(var1, "%s", argv[2]);
  50.  
  51.         if (argc == 4)
  52.             sprintf(var1, "%s", argv[3]);
  53.         
  54.         tjo = strcmp(var1, pek1);
  55.         if (tjo == 0)
  56.             kontr = 1;
  57.             
  58.         tjo = strcmp(var1, pek2);
  59.         if (tjo == 0)
  60.             kontr = 1;
  61.  
  62.         tjo = strcmp(var1, pek3);
  63.         if (tjo == 0)
  64.             kontr = 2;
  65.             
  66.         tjo = strcmp(var1, pek4);
  67.         if (tjo == 0)
  68.             kontr = 2;
  69.             
  70.         tjo = strcmp(var1, pek5);
  71.         if (tjo == 0)
  72.             kontr = 3;
  73.             
  74.         tjo = strcmp(var1, pek6);
  75.         if (tjo == 0)
  76.             kontr = 3;
  77.             
  78.         tjo = strcmp(var1, pek7);
  79.         if (tjo == 0)
  80.             kontr = 4;
  81.             
  82.         tjo = strcmp(var1, pek8);
  83.         if (tjo == 0)
  84.             kontr = 4;
  85.             
  86.         tjo = strcmp(var1, pek9);
  87.         if (tjo == 0)
  88.             kontr = 5;
  89.             
  90.         tjo = strcmp(var1, pek10);
  91.         if (tjo == 0)
  92.             kontr = 5;
  93.             
  94.         tjo = strcmp(var1, pek11);
  95.         if (tjo == 0)
  96.             kontr = 6;
  97.             
  98.         tjo = strcmp(var1, pek12);
  99.         if (tjo == 0)
  100.             kontr = 6;
  101.     }
  102.     
  103.     if (hej == 3){
  104.         if(kontr == 1 || kontr == 2 || kontr == 3 || 
  105.              kontr == 4 || kontr == 5 || kontr == 6) {
  106.  
  107.           if ((fp=fopen("DIR2FILE.TXT", "w+"))==NULL){
  108.             fprintf(stderr,"Cant open DIR2FILE.TXT!\n");
  109.             exit(1);
  110.         }
  111.     }
  112.         if (kontr == 0){
  113.             sprintf(filename,  "%s", argv[2]);
  114.           if ((fp=fopen(filename, "w+"))==NULL){
  115.             fprintf(stderr,"Cant open %s!\n", filename);
  116.             exit(1);
  117.           }
  118.       }
  119.          read_data(fp, argv[1], kontr);
  120.  
  121.     }
  122.     
  123.     if (hej == 4){
  124.         if(kontr == 1 || kontr == 2 || kontr == 3    || 
  125.              kontr == 4 || kontr == 5 || kontr == 6)  {
  126.  
  127.             sprintf(filename,  "%s", argv[2]);
  128.           if ((fp=fopen(var1, "w+"))==NULL){
  129.               fprintf(stderr,"Cant open %s!\n", filename);
  130.             exit(1);
  131.         }
  132.           read_data(fp, argv[1], kontr);
  133.       }
  134.       else{
  135.             put_info();
  136.         }
  137.     }
  138.     fclose(fp);
  139.   return(0);
  140. }
  141.  
  142.  
  143.  
  144. void read_data(FILE *fp, char dir[], int attr)
  145. {
  146.   DTA *pdta;
  147.   int ret, attribut = 0;
  148.     
  149.     if(attr != 0){
  150.  
  151.         if(attr == 1)
  152.             attribut = FA_HIDDEN;
  153.  
  154.         if(attr == 2)
  155.             attribut = FA_SYSTEM;
  156.  
  157.         if(attr == 3)
  158.             attribut = FA_VOLUME;
  159.  
  160.         if(attr == 4)
  161.             attribut = FA_SUBDIR;
  162.  
  163.         if(attr == 5)
  164.             attribut = FA_READONLY;
  165.  
  166.         if(attr == 6)
  167.             attribut = FA_ARCHIVE;
  168.     }
  169.         
  170.     printf("%cE", 27);
  171.   pdta = Fgetdta();
  172.   ret = Fsfirst(dir, attribut);
  173.  
  174.   while(ret == 0) {
  175.     printf("%-15s %-13ld\n", pdta->d_fname, pdta->d_length);
  176.     fprintf(fp, "%-15s %-13ld\n", pdta->d_fname, pdta->d_length);
  177.     ret = Fsnext();
  178.   }
  179. }
  180.  
  181.  
  182. void put_info(void)
  183. {
  184.   printf("%cE%cf", 27, 27);
  185.  
  186.     printf("   freeware       ==========================================       freeware\n");
  187.     printf("                  ** %cp       DIRECTORY TO FILE  1.1       %cq **\n", 27, 27);
  188.     printf("                  ** %cp         from Xite Software         %cq **\n", 27, 27);
  189.     printf("                  ** %cp    by  Per-Erik \"Pekka\" Peterson   %cq **\n", 27, 27);
  190.     printf("                  ==========================================\n\n\n");
  191.  
  192.  
  193.     puts("USAGE: <Drive:\\path\\filename.ext> <Drive:\\path\\filename.ext> <option>\n");
  194.  
  195.     puts("<Drive:\\path\\filename.ext> means from where and what you want to dir.\n");
  196.  
  197.     puts("<next Drive:\\path\\filename.ext>");
  198.     puts("                           means in what file you want to write your dir.");
  199.     puts("                           Default is DIR2FILE.TXT.\n");
  200.  
  201.     puts("<options>                  means type of files you want to include.");
  202.     puts("                           Default is ordinary files.\n");
  203.                            
  204.     puts("Options:             /h or /H    Include Hidden files");
  205.     puts("                     /s or /S    Include System files");
  206.     puts("                     /v or /V    Type Volume Label");
  207.     puts("                     /d or /D    Include Subdirectories");
  208.     puts("                     /r or /R    Include Readonly files");
  209.     puts("                     /a or /A    Include files whith archive bit set");
  210.  
  211.     printf("%cp <Press any key to continue> %cq", 27, 27);
  212.     getch();
  213.  
  214.     printf("%cEFor ex from desktop in TTP command line: Type...\n\n", 27);
  215.  
  216.     puts("*.*\n");
  217.  
  218.     puts("makes a directory of current dir to file dir2file.txt whithout subdirs.");
  219.     printf("From your shell you type...\n\n");
  220.  
  221.     puts("dir2file *.*\n");
  222.     
  223.     puts("All other examples is for the TTP command.\n");
  224.     
  225.     puts("h:\\pure\\*.* h:\\pekka\\pure.asc /d\n");
  226.  
  227.     puts("Includes all directories and files in Pure C and write them to PURE.ASC in");
  228.     puts("directory PEKKA on drive H:. You can offcoarse skip the Drive and path for");
  229.     puts("your textfile and put it in that directory you are right now like...\n");
  230.  
  231.     puts("f:\\games\\*.prg games.txt /D\n");
  232.  
  233.     puts("Write the directory GAMES on F:\\ to games.txt there you are.\n");
  234.     
  235.     puts("C:\\*.* /v\n");
  236.     
  237.     puts("Types the Volume name on that partition or disk you want. You must allways");
  238.     printf("%cp <Press any key to continue> %cq", 27, 27);
  239.     getch();
  240.  
  241.      printf("%cE", 27);
  242.     puts("put *.*, else the name of the disc will be saved in a file called /V.");
  243.     puts("You can try for youreself and see what happen. Make some tests and see if");
  244.     puts("you may have some use of this little program. Please give me a call or ");
  245.     puts("mail if you have something on your mind.\n\n");
  246.  
  247.     puts("              --==>   Mvh  Per-Erik \"Pekka\" Peterson.!!   <==--\n\n");
  248.  
  249.     puts("================================================================================\n");
  250.     puts("Netmail  :           per.erik peterson   2:203/221.10\n");
  251.  
  252.     puts("Email    :           per-erik_peterson@p10.straight.ct.se\n");
  253.  
  254.     puts("Phone    :           Pekka +46-31-458807\n");
  255.  
  256.     puts("Snailmail:           Per-Erik Peterson");
  257.     puts("                     P.R");
  258.     puts("                     421 02 V.F");
  259.     puts("                     Sweden\n\n");
  260.     printf("%cp <Press any key to Quit> %cq", 27, 27);
  261.     getch();
  262.     printf("%ce%cE", 27, 27);
  263. }